Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: key assignment checking key in use #1339

Merged
merged 26 commits into from
Nov 28, 2023
Merged

Conversation

yaruwangway
Copy link
Contributor

@yaruwangway yaruwangway commented Oct 2, 2023


Description

Closes: #1282, #603

This PR is state-breaking!


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • Included the correct type prefix in the PR title
  • Added ! to the type prefix if state-machine breaking change (i.e., requires coordinated upgrade)
  • Confirmed this PR does not introduce changes requiring state migrations, OR migration code has been added to consumer and/or provider modules
  • Targeted the correct branch (see PR Targeting)
  • Provided a link to the relevant issue or specification
  • Followed the guidelines for building SDK modules
  • Included the necessary unit and integration tests
  • Added a changelog entry to CHANGELOG.md
  • Included comments for documenting Go code
  • Updated the relevant documentation or specification
  • Reviewed "Files changed" and left comments if necessary
  • Confirmed all CI checks have passed
  • If this PR is library API breaking, bump the go.mod version string of the repo, and follow through on a new major release for both the consumer and provider

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed ! in the type prefix if API or client breaking change
  • confirmed this PR does not introduce changes requiring state migrations, OR confirmed migration code has been added to consumer and/or provider modules
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic
  • reviewed API design and naming
  • reviewed documentation is accurate
  • reviewed tests and test coverage

* feat: store chain in proposal

* add govHook

* delete GetChainsInProposal

* check proposal type

* update key

* feat: add query proposed chainIDs

* feat: set govhook

* feat: parse key

* refactor: names

* feat: add list proposed consumer chains

* test: add e2e test

* add e2e test

* update comments

* update ProposeConsumerChains in e2e test

* remove wait for block

* docs: update changelog

* fix: lint

* add  TestParseProposedConsumerChainKey

* refactor gov hook

* Update proto/interchain_security/ccv/provider/v1/query.proto

Co-authored-by: MSalopek <[email protected]>

* update proto

* add test for set kv

* refactor key to be prefix_proposalID

* formatting

* update e2e test

* format

* Update x/ccv/provider/keeper/gov_hook.go

Co-authored-by: Shawn <[email protected]>

* Update x/ccv/provider/keeper/keeper.go

Co-authored-by: Shawn <[email protected]>

* Update x/ccv/provider/keeper/keeper.go

Co-authored-by: Shawn <[email protected]>

* fix e2e test

* fix gosec

* remove type url check

* test: add unit test

* lint

* fix lint

* fix err

---------

Co-authored-by: MSalopek <[email protected]>
Co-authored-by: Shawn <[email protected]>
@github-actions github-actions bot added C:Testing Assigned automatically by the PR labeler C:x/provider Assigned automatically by the PR labeler labels Oct 2, 2023
Yaru Wang and others added 2 commits October 2, 2023 17:19
…ey in use (#1279)

* update GetAllValidatorsByConsumerAddr

* fix test

* update ValidatorConsensusKeyInUse
@yaruwangway yaruwangway changed the title feat!: store proposed chainID before voting finishes (#1289) feat!: key assignment checking key in use Oct 2, 2023
@yaruwangway yaruwangway marked this pull request as ready for review October 2, 2023 16:38
@yaruwangway yaruwangway requested a review from a team as a code owner October 2, 2023 16:38
@yaruwangway yaruwangway mentioned this pull request Oct 4, 2023
21 tasks
@MSalopek MSalopek added the S: KTLO Keeping the lights on: Keeping the current product operational (bugs, troubleshooting, deps updates) label Oct 9, 2023
CHANGELOG.md Outdated Show resolved Hide resolved
@sainoe
Copy link
Contributor

sainoe commented Oct 10, 2023

Production code LGTM. I will complete the memory testing.

Copy link
Contributor

@MSalopek MSalopek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are changes needed.

Some context was dropped and my previous review is actually invalid. I have overlooked important details.

Copy link
Contributor

@MSalopek MSalopek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/cosmos/interchain-security/blob/main/x/ccv/provider/keeper/key_assignment.go#L374

We need to check that the chain_id exists in the function above. Keeper.AssignConsumerKey() already checks if the key is in use.

func (k Keeper) AssignConsumerKey(
ctx sdk.Context,
chainID string,
validator stakingtypes.Validator,
consumerKey tmprotocrypto.PublicKey,
) error {
// check that the consumer chain is either registered or that
// ConsumerAdditionProposal was voted on.
if !k.CheckIfConsumerIsProposedOrRegistered(ctx, chainID) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mpoke This is the change that prevents key assignments for non-registered consumer chains.

Copy link
Contributor

@MSalopek MSalopek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve!

Thanks for refactoring this.

Please resolve conflicts before we can move to merging.

Copy link
Contributor

@mpoke mpoke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Great work.

x/ccv/provider/keeper/key_assignment.go Outdated Show resolved Hide resolved
@github-actions github-actions bot added C:x/consumer Assigned automatically by the PR labeler C:Build Assigned automatically by the PR labeler C:CI Assigned automatically by the PR labeler C:Docs Assigned automatically by the PR labeler C:ADR Assigned automatically by the PR labeler labels Nov 24, 2023
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this changelog entry here?

@github-actions github-actions bot removed C:x/consumer Assigned automatically by the PR labeler C:Build Assigned automatically by the PR labeler C:CI Assigned automatically by the PR labeler C:Docs Assigned automatically by the PR labeler C:ADR Assigned automatically by the PR labeler labels Nov 27, 2023
@MSalopek
Copy link
Contributor

Resolved conflicts and updated broken tests.

Ready to merge.

Copy link
Contributor

@sainoe sainoe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for fixing the tests!

@MSalopek MSalopek merged commit 11b5858 into main Nov 28, 2023
27 checks passed
MSalopek added a commit that referenced this pull request Dec 1, 2023
* feat!: store proposed chainID before voting finishes (#1289)

* feat: store chain in proposal

* add govHook

* delete GetChainsInProposal

* check proposal type

* update key

* feat: add query proposed chainIDs

* feat: set govhook

* feat: parse key

* refactor: names

* feat: add list proposed consumer chains

* test: add e2e test

* add e2e test

* update comments

* update ProposeConsumerChains in e2e test

* remove wait for block

* docs: update changelog

* fix: lint

* add  TestParseProposedConsumerChainKey

* refactor gov hook

* Update proto/interchain_security/ccv/provider/v1/query.proto

Co-authored-by: MSalopek <[email protected]>

* update proto

* add test for set kv

* refactor key to be prefix_proposalID

* formatting

* update e2e test

* format

* Update x/ccv/provider/keeper/gov_hook.go

Co-authored-by: Shawn <[email protected]>

* Update x/ccv/provider/keeper/keeper.go

Co-authored-by: Shawn <[email protected]>

* Update x/ccv/provider/keeper/keeper.go

Co-authored-by: Shawn <[email protected]>

* fix e2e test

* fix gosec

* remove type url check

* test: add unit test

* lint

* fix lint

* fix err

---------

Co-authored-by: MSalopek <[email protected]>
Co-authored-by: Shawn <[email protected]>

* fix test

* feat: update GetAllValidatorsByConsumerAddr for fast find consensus key in use  (#1279)

* update GetAllValidatorsByConsumerAddr

* fix test

* update ValidatorConsensusKeyInUse

* update changelog

* Update proto/interchain_security/ccv/provider/v1/query.proto

* Update x/ccv/provider/keeper/gov_hook.go

* Update x/ccv/provider/keeper/keeper.go

* Update x/ccv/provider/keeper/keeper.go

* Update x/ccv/provider/keeper/keeper.go

* fix gov hooks

* fix bug and add tests

* finish unit testing of consu addition legacy prop getter

* nit

* update changelog

* lint

* update changelog entry

* Update .changelog/unreleased/features/provider/1339-check-key-assignment-in-use.md

Co-authored-by: Marius Poke <[email protected]>

* fix #1282

* remove todos and update doc

* tests: fix broken unit tests

* tests: fix broken integration test consumer registration

* tests: update names

---------

Co-authored-by: MSalopek <[email protected]>
Co-authored-by: Shawn <[email protected]>
Co-authored-by: Simon Noetzlin <[email protected]>
Co-authored-by: Marius Poke <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C:Testing Assigned automatically by the PR labeler C:x/provider Assigned automatically by the PR labeler C:x/types Assigned automatically by the PR labeler S: KTLO Keeping the lights on: Keeping the current product operational (bugs, troubleshooting, deps updates)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Allow key assignment on registered consumers and chains with proposals in voting period
5 participants